package case15

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"log"
	"net/http"
)

func Test() {

	fmt.Println("🎯示例十五：文件上传")

	r := gin.Default()

	// 处理multipart forms提交文件时默认的内存限制是32 MiB
	// 可以通过下面的方式修改
	// router.MaxMultipartMemory = 8 << 20  // 8 MiB
	r.POST("/upload", func(c *gin.Context) {
		// 上传单个文件
		file, err := c.FormFile("f1")
		// 表单其它参数
		var title string = c.PostForm("title")
		if err != nil {
			c.JSON(http.StatusInternalServerError, gin.H{
				"message": err,
			})
			return
		}

		log.Println("上传文件名", file.Filename)
		log.Println("上传文件大小", file.Size)
		// 拼接存放文件地址
		dst := fmt.Sprintf("E:\\%s", file.Filename)
		// 上传文件到指定地址
		c.SaveUploadedFile(file, dst)
		c.JSON(http.StatusOK, gin.H{
			"message": fmt.Sprintf("%s , 上传成功！ title=%s", file.Filename, title),
		})
	})

	// 上传多文件
	r.POST("/uploads", func(c *gin.Context) {

		form, _ := c.MultipartForm()
		files := form.File["files"]

		for _, file := range files {
			log.Println(file.Filename)
			// 拼接存放文件地址
			dst := fmt.Sprintf("E:\\%s", file.Filename)
			// 上传文件到指定地址
			c.SaveUploadedFile(file, dst)
		}

		c.JSON(http.StatusOK, gin.H{"message": "操作成功!"})
	})

	r.Run(":60000")
}
